home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 676-700 / 681 / term / source.lha / CopyPanel.c < prev    next >
C/C++ Source or Header  |  1992-05-09  |  12KB  |  402 lines

  1. /*
  2. **    $Id: CopyPanel.c,v 1.4 92/04/21 16:58:32 olsen Sta Locker: olsen $
  3. **    $Revision: 1.4 $
  4. **    $Date: 92/04/21 16:58:32 $
  5. **
  6. **    Editing panel for configuration copying
  7. **
  8. **    Copyright © 1990-1992 by Olaf `Olsen' Barthel & MXM
  9. **        All Rights Reserved
  10. */
  11.  
  12. #include "termGlobal.h"
  13.  
  14. enum    {    GAD_SERIAL,GAD_MODEM,GAD_SCREEN,GAD_TERMINAL,GAD_COMMANDS,
  15.         GAD_KEYMACROS,GAD_TRANSFER,GAD_PATHS,GAD_MISC,GAD_FASTMACROS,
  16.         GAD_COPYTOALL,GAD_ALL,GAD_CLEAR,GAD_USE,GAD_CANCEL };
  17.  
  18. #define WIDTH    181
  19. #define HEIGHT    191
  20.  
  21. STATIC ULONG Bits = 0;
  22.  
  23. STATIC struct Gadget *
  24. CreateAllGadgets(struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  25. {
  26.     struct Gadget        *Gadget;
  27.     struct NewGadget     NewGadget;
  28.     UWORD             Counter = 0;
  29.  
  30.     memset(&NewGadget,0,sizeof(struct NewGadget));
  31.  
  32.     if(Gadget = CreateContext(GadgetList))
  33.     {
  34.         NewGadget . ng_LeftEdge        = 10;
  35.         NewGadget . ng_TopEdge        = 25;
  36.         NewGadget . ng_Width        = 26;
  37.         NewGadget . ng_Height        = 11;
  38.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_SERIAL_GAD);
  39.         NewGadget . ng_TextAttr        = &DefaultFont;
  40.         NewGadget . ng_GadgetID        = Counter;
  41.         NewGadget . ng_Flags        = PLACETEXT_RIGHT;
  42.         NewGadget . ng_VisualInfo    = VisualInfo;
  43.  
  44.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  45.             GT_Underscore,    '_',
  46.             GTCB_Checked,    Bits & (1 << 0),
  47.         TAG_DONE);
  48.  
  49.         NewGadget . ng_TopEdge        = 37;
  50.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_MODEM_GAD);
  51.         NewGadget . ng_GadgetID        = Counter;
  52.  
  53.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  54.             GT_Underscore,    '_',
  55.             GTCB_Checked,    Bits & (1 << 1),
  56.         TAG_DONE);
  57.  
  58.         NewGadget . ng_TopEdge        = 61;
  59.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_SCREEN_GAD);
  60.         NewGadget . ng_GadgetID        = Counter;
  61.  
  62.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  63.             GT_Underscore,    '_',
  64.             GTCB_Checked,    Bits & (1 << 2),
  65.         TAG_DONE);
  66.  
  67.         NewGadget . ng_TopEdge        = 73;
  68.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_TERMINAL_GAD);
  69.         NewGadget . ng_GadgetID        = Counter;
  70.  
  71.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  72.             GT_Underscore,    '_',
  73.             GTCB_Checked,    Bits & (1 << 3),
  74.         TAG_DONE);
  75.  
  76.         NewGadget . ng_TopEdge        = 85;
  77.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_COMMANDS_GAD);
  78.         NewGadget . ng_GadgetID        = Counter;
  79.  
  80.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  81.             GT_Underscore,    '_',
  82.             GTCB_Checked,    Bits & (1 << 4),
  83.         TAG_DONE);
  84.  
  85.         NewGadget . ng_TopEdge        = 109;
  86.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_KEYBOARD_MACROS_GAD);
  87.         NewGadget . ng_GadgetID        = Counter;
  88.  
  89.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  90.             GT_Underscore,    '_',
  91.             GTCB_Checked,    Bits & (1 << 5),
  92.         TAG_DONE);
  93.  
  94.         NewGadget . ng_TopEdge        = 49;
  95.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_TRANSFER_GAD);
  96.         NewGadget . ng_GadgetID        = Counter;
  97.  
  98.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  99.             GT_Underscore,    '_',
  100.             GTCB_Checked,    Bits & (1 << 6),
  101.         TAG_DONE);
  102.  
  103.         NewGadget . ng_TopEdge        = 97;
  104.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_PATHS_GAD);
  105.         NewGadget . ng_GadgetID        = Counter;
  106.  
  107.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  108.             GT_Underscore,    '_',
  109.             GTCB_Checked,    Bits & (1 << 7),
  110.         TAG_DONE);
  111.  
  112.         NewGadget . ng_TopEdge        = 121;
  113.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_MISCELLANEOUS_GAD);
  114.         NewGadget . ng_GadgetID        = Counter;
  115.  
  116.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  117.             GT_Underscore,    '_',
  118.             GTCB_Checked,    Bits & (1 << 8),
  119.         TAG_DONE);
  120.  
  121.         NewGadget . ng_TopEdge        = 133;
  122.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_FAST_MACROS_GAD);
  123.         NewGadget . ng_GadgetID        = Counter;
  124.  
  125.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  126.             GT_Underscore,    '_',
  127.             GTCB_Checked,    Bits & (1 << 9),
  128.         TAG_DONE);
  129.  
  130.         NewGadget . ng_TopEdge        = 145;
  131.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_TO_ALL_ENTRIES_GAD);
  132.         NewGadget . ng_GadgetID        = Counter;
  133.  
  134.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  135.             GT_Underscore,    '_',
  136.             GTCB_Checked,    FALSE,
  137.         TAG_DONE);
  138.  
  139.         NewGadget . ng_TopEdge        = 160;
  140.         NewGadget . ng_Width        = 79;
  141.         NewGadget . ng_Height        = 12;
  142.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_ALL_GAD);
  143.         NewGadget . ng_GadgetID        = Counter;
  144.         NewGadget . ng_Flags        = PLACETEXT_IN;
  145.  
  146.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  147.             GT_Underscore,    '_',
  148.         TAG_DONE);
  149.  
  150.         NewGadget . ng_LeftEdge        = 92;
  151.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_CLEAR_GAD);
  152.         NewGadget . ng_GadgetID        = Counter;
  153.  
  154.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  155.             GT_Underscore,    '_',
  156.         TAG_DONE);
  157.  
  158.         NewGadget . ng_LeftEdge        = 10;
  159.         NewGadget . ng_TopEdge        = 176;
  160.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_USE_GAD);
  161.         NewGadget . ng_GadgetID        = Counter;
  162.  
  163.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  164.             GT_Underscore,    '_',
  165.         TAG_DONE);
  166.  
  167.         NewGadget . ng_LeftEdge        = WIDTH - 10 - NewGadget . ng_Width;
  168.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_CANCEL_GAD);
  169.         NewGadget . ng_GadgetID        = Counter;
  170.  
  171.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  172.             GT_Underscore,    '_',
  173.         TAG_DONE);
  174.  
  175.         NewGadget . ng_Height        = 8;
  176.         NewGadget . ng_Width        = 19 * 8;
  177.         NewGadget . ng_LeftEdge        = 14;
  178.         NewGadget . ng_TopEdge        = 14;
  179.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_SELECT_DATA_TO_COPY_GAD);
  180.         NewGadget . ng_Flags        = PLACETEXT_IN|NG_HIGHLABEL;
  181.         NewGadget . ng_GadgetID        = Counter;
  182.  
  183.         GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
  184.             TAG_DONE);
  185.     }
  186.  
  187.     return(Gadget);
  188. }
  189.  
  190. STATIC VOID __regargs
  191. CopyConfig(struct Configuration *MyConfig,BYTE Part)
  192. {
  193.     switch(Part)
  194.     {
  195.         case GAD_SERIAL:    memcpy(&MyConfig -> BaudRate,&Config . BaudRate,offsetof(struct Configuration,ModemInit));
  196.  
  197.                     MyConfig -> SerBuffSize = Config . SerBuffSize;
  198.  
  199.                     break;
  200.  
  201.         case GAD_MODEM:        memcpy(&MyConfig -> ModemInit[0],&Config . ModemInit[0],offsetof(struct Configuration,Protocol) - offsetof(struct Configuration,ModemInit));
  202.  
  203.                     strcpy(MyConfig -> NoDialTone,Config . NoDialTone);
  204.  
  205.                     MyConfig -> CheckCarrier    = Config . CheckCarrier;
  206.                     MyConfig -> DropDTR        = Config . DropDTR;
  207.                     MyConfig -> PassThrough        = Config . PassThrough;
  208.  
  209.                     break;
  210.  
  211.         case GAD_SCREEN:    memcpy(&MyConfig -> DisplayMode,&Config . DisplayMode,offsetof(struct Configuration,CaptureFilter) - offsetof(struct Configuration,DisplayMode));
  212.                     break;
  213.  
  214.         case GAD_TERMINAL:    memcpy(&MyConfig -> CaptureFilter,&Config . CaptureFilter,offsetof(struct Configuration,CursorApp) - offsetof(struct Configuration,CaptureFilter));
  215.                     memcpy(&MyConfig -> SwapBSDelete,&Config . SwapBSDelete,offsetof(struct Configuration,UploadMacro) - offsetof(struct Configuration,SwapBSDelete));
  216.  
  217.                     strcpy(MyConfig -> KeyMapName,Config . KeyMapName);
  218.                     strcpy(MyConfig -> AnswerBack,Config . AnswerBack);
  219.  
  220.                     MyConfig -> TitleBar    = Config . TitleBar;
  221.                     MyConfig -> StatusLine    = Config . StatusLine;
  222.  
  223.                     MyConfig -> ReceiveCR    = Config . ReceiveCR;
  224.                     MyConfig -> ReceiveLF    = Config . ReceiveLF;
  225.  
  226.                     MyConfig -> SystemBeep    = Config . SystemBeep;
  227.  
  228.                     break;
  229.  
  230.         case GAD_COMMANDS:    strcpy(MyConfig -> StartupMacro,Config . StartupMacro);
  231.                     strcpy(MyConfig -> UploadMacro,Config . UploadMacro);
  232.                     strcpy(MyConfig -> DownloadMacro,Config . DownloadMacro);
  233.                     break;
  234.  
  235.         case GAD_KEYMACROS:    strcpy(MyConfig -> MacroFile,Config . MacroFile);
  236.                     break;
  237.  
  238.         case GAD_TRANSFER:    strcpy(MyConfig -> Protocol,Config . Protocol);
  239.                     break;
  240.  
  241.         case GAD_MISC:        MyConfig -> Priority        = Config . Priority;
  242.                     MyConfig -> OverridePath    = Config . OverridePath;
  243.                     MyConfig -> BackupConfig    = Config . BackupConfig;
  244.  
  245.                     MyConfig -> MaxLogBuffSize    = Config . MaxLogBuffSize;
  246.                     MyConfig -> BufferEnabled    = Config . BufferEnabled;
  247.                     MyConfig -> SetArchivedBit    = Config . SetArchivedBit;
  248.                     MyConfig -> OpenFastMacroPanel    = Config . OpenFastMacroPanel;
  249.  
  250.                     break;
  251.  
  252.         case GAD_PATHS:        memcpy(&MyConfig -> DefaultStorage[0],&Config . DefaultStorage[0],offsetof(struct Configuration,SwapBSDelete) - offsetof(struct Configuration,DefaultStorage));
  253.                     break;
  254.  
  255.         case GAD_FASTMACROS:    strcpy(MyConfig -> FastMacroFile,Config . FastMacroFile);
  256.                     break;
  257.     }
  258. }
  259.  
  260. VOID
  261. CopyPanel(struct Configuration *MyConfig)
  262. {
  263.     struct Window    *PanelWindow;
  264.     struct Gadget    *GadgetList;
  265.     struct Gadget    *GadgetArray[GAD_CANCEL + 2];
  266.  
  267.     if(CreateAllGadgets(&GadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  268.     {
  269.         if(PanelWindow = OpenWindowTags(NULL,
  270.             WA_Left,    (Screen -> Width - WIDTH) >> 1,
  271.             WA_Top,        (Screen -> Height - HEIGHT) >> 1,
  272.             WA_Width,    WIDTH,
  273.             WA_Height,    HEIGHT,
  274.             WA_Activate,    TRUE,
  275.             WA_DragBar,    TRUE,
  276.             WA_DepthGadget,    TRUE,
  277.             WA_RMBTrap,    TRUE,
  278.             WA_DepthGadget,    TRUE,
  279.             WA_CloseGadget,    TRUE,
  280.             WA_CustomScreen,Screen,
  281.             WA_IDCMP,    IDCMP_CLOSEWINDOW | IDCMP_VANILLAKEY | BUTTONIDCMP | CHECKBOXIDCMP,
  282.             WA_Title,    LocaleString(MSG_COPYPANEL_COPY_CONFIG_TXT),
  283.         TAG_DONE))
  284.         {
  285.             struct IntuiMessage    *Massage;
  286.             ULONG             Class,Code;
  287.             struct Gadget        *Gadget;
  288.             BYTE             Terminated = FALSE;
  289.             LONG             i;
  290.  
  291.             PushWindow(PanelWindow);
  292.  
  293.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  294.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  295.             GT_RefreshWindow(PanelWindow,NULL);
  296.  
  297.             if(!MyConfig)
  298.             {
  299.                 GT_SetGadgetAttrs(GadgetArray[GAD_COPYTOALL],PanelWindow,NULL,
  300.                     GTCB_Checked,    TRUE,
  301.                     GA_Disabled,    TRUE,
  302.                 TAG_DONE);
  303.             }
  304.  
  305.             while(!Terminated)
  306.             {
  307.                 WaitPort(PanelWindow -> UserPort);
  308.  
  309.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  310.                 {
  311.                     Class    = Massage -> Class;
  312.                     Code    = Massage -> Code;
  313.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  314.  
  315.                     GT_ReplyIMsg(Massage);
  316.  
  317.                     if(Class == IDCMP_VANILLAKEY)
  318.                         KeySelect(GadgetArray,GAD_CANCEL,Code,PanelWindow,&Gadget,&Class,&Code);
  319.  
  320.                     if(Class == IDCMP_CLOSEWINDOW)
  321.                         Terminated = TRUE;
  322.  
  323.                     if(Class == IDCMP_GADGETUP)
  324.                     {
  325.                         switch(Gadget -> GadgetID)
  326.                         {
  327.                             case GAD_ALL:    for(i = GAD_SERIAL ; i <= GAD_FASTMACROS ; i++)
  328.                                     {
  329.                                         GT_SetGadgetAttrs(GadgetArray[i],PanelWindow,NULL,
  330.                                             GTCB_Checked,    TRUE,
  331.                                         TAG_DONE);
  332.                                     }
  333.  
  334.                                     break;
  335.  
  336.                             case GAD_CLEAR:    for(i = GAD_SERIAL ; i <= GAD_FASTMACROS ; i++)
  337.                                     {
  338.                                         GT_SetGadgetAttrs(GadgetArray[i],PanelWindow,NULL,
  339.                                             GTCB_Checked,    FALSE,
  340.                                         TAG_DONE);
  341.                                     }
  342.  
  343.                                     break;
  344.  
  345.                             case GAD_USE:    Bits = NULL;
  346.  
  347.                                     if(GT_CHECKED(GadgetArray[GAD_COPYTOALL]))
  348.                                     {
  349.                                         LONG j;
  350.  
  351.                                         for(i = GAD_SERIAL ; i <= GAD_FASTMACROS ; i++)
  352.                                         {
  353.                                             if(GT_CHECKED(GadgetArray[i]))
  354.                                             {
  355.                                                 for(j = 0 ; j < NumPhoneEntries ; j++)
  356.                                                     CopyConfig(&Phonebook[j] -> Config,i);
  357.  
  358.                                                 Bits |= (1 << i);
  359.                                             }
  360.                                         }
  361.                                     }
  362.                                     else
  363.                                     {
  364.                                         if(MyConfig)
  365.                                         {
  366.                                             for(i = GAD_SERIAL ; i <= GAD_FASTMACROS ; i++)
  367.                                             {
  368.                                                 if(GT_CHECKED(GadgetArray[i]))
  369.                                                 {
  370.                                                     CopyConfig(MyConfig,i);
  371.  
  372.                                                     Bits |= (1 << i);
  373.                                                 }
  374.                                             }
  375.                                         }
  376.                                     }
  377.  
  378.                                     Terminated = TRUE;
  379.  
  380.                                     break;
  381.  
  382.                             case GAD_CANCEL:Terminated = TRUE;
  383.  
  384.                                     break;
  385.  
  386.                             default:    break;
  387.                         }
  388.                     }
  389.                 }
  390.             }
  391.  
  392.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  393.  
  394.             PopWindow();
  395.  
  396.             CloseWindow(PanelWindow);
  397.         }
  398.  
  399.         FreeGadgets(GadgetList);
  400.     }
  401. }
  402.